From a0d9728e6c4fcf946418c9b1bd51a47b2ea02460 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Mon, 9 Nov 2015 14:17:09 +0100 Subject: [PATCH] textdisplay: save/restore when using different state flags Also, never use gtk_widget_get_state_flags() when we want gtk_style_context_get_state() --- gtk/gtktextdisplay.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/gtk/gtktextdisplay.c b/gtk/gtktextdisplay.c index fb5ab26240..6b5dbf4190 100644 --- a/gtk/gtktextdisplay.c +++ b/gtk/gtktextdisplay.c @@ -183,7 +183,7 @@ gtk_text_renderer_prepare_run (PangoRenderer *renderer, g_assert (appearance != NULL); context = gtk_widget_get_style_context (text_renderer->widget); - state = gtk_widget_get_state_flags (text_renderer->widget); + state = gtk_style_context_get_state (context); if (appearance->draw_bg && text_renderer->state == NORMAL) bg_rgba = appearance->rgba[0]; @@ -194,9 +194,14 @@ gtk_text_renderer_prepare_run (PangoRenderer *renderer, if (text_renderer->state == SELECTED) { + gtk_style_context_save (context); + state |= GTK_STATE_FLAG_SELECTED; + gtk_style_context_set_state (context, state); gtk_style_context_get (context, state, "color", &fg_rgba, NULL); + + gtk_style_context_restore (context); } else if (text_renderer->state == CURSOR && gtk_widget_has_focus (text_renderer->widget)) { @@ -523,7 +528,7 @@ text_renderer_begin (GtkTextRenderer *text_renderer, gtk_style_context_save (context); gtk_style_context_add_class (context, GTK_STYLE_CLASS_VIEW); - state = gtk_widget_get_state_flags (widget); + state = gtk_style_context_get_state (context); gtk_style_context_get_color (context, state, &color); cairo_save (cr); @@ -820,7 +825,7 @@ G_GNUC_END_IGNORE_DEPRECATIONS { GdkRGBA color; - state = gtk_widget_get_state_flags (text_renderer->widget); + state = gtk_style_context_get_state (context); G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_style_context_get_background_color (context, state, &color); G_GNUC_END_IGNORE_DEPRECATIONS -- 2.30.2